package com.engine.salary.entity.salaryarchive.po;

import com.engine.hrmelog.annotation.ElogTransform;
import com.engine.salary.annotation.Auth;
import com.engine.salary.enums.datacollection.DataCollectionEmployeeTypeEnum;
import com.engine.salary.enums.salaryarchive.SalaryArchiveStatusEnum;
import com.engine.salary.enums.salaryarchive.SalaryArchiveAddTypeEnum;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.Collection;
import java.util.Date;
import java.util.List;
import java.util.Set;

/**
 * 薪资档案
 * <p>Copyright: Copyright (c) 2022</p>
 * <p>Company: 泛微软件</p>
 *
 * @author qiantao
 * @version 1.0
 **/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
//hrsa_salary_archive
@ElogTransform(name = "薪资档案")
@Auth(page = "salaryArchive")
public class SalaryArchivePO {

    /**
     * 主键id
     */
    @ElogTransform(name = "主键")
    private Long id;

    /**
     * 人员信息表的主键id
     */
    @ElogTransform(name = "人员id")
    private Long employeeId;

    /**
     * 起始发薪日期
     */
    @ElogTransform(name = "起始发薪日期")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date payStartDate;

    /**
     * 最后发薪日期
     */
    @ElogTransform(name = "最后发薪日期")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date payEndDate;

    /**
     * 档案状态
     *
     * @see SalaryArchiveStatusEnum
     */
    @ElogTransform(name = "档案状态")
    private String runStatus;

    /**
     * 人员类型,0或null组织架构,1非系统人员
     *
     * @see DataCollectionEmployeeTypeEnum
     */
    @ElogTransform(name = "人员类型")
    private Integer employeeType;


    /**
     * 定薪类型
     *
     * @see SalaryArchiveAddTypeEnum
     */
    @ElogTransform(name = "定薪类型")
    private Integer addType;

    /**
     * 停薪类型
     *
     * @see
     */
    @ElogTransform(name = "停薪类型")
    private Integer stopType;

    /**
     * 创建时间
     */
    @ElogTransform(name = "创建时间")
    private Date createTime;

    /**
     * 更新时间
     */
    @ElogTransform(name = "更新时间")
    private Date updateTime;

    /**
     * 创建人
     */
    @ElogTransform(name = "创建人")
    private Long creator;

    /**
     * 是否已删除。0：未删除、1：已删除
     */
    private Integer deleteType;

    /**
     * 租户ID
     */
    @ElogTransform(name = "租户")
    private String tenantKey;

    /**
     * 个税扣缴义务人的主键id
     */
    @ElogTransform(name = "个税扣缴义务人id")
    private Long taxAgentId;



    //---------条件-------
    private Collection<Long> ids;
    private Collection<Long> taxAgentIds;
    private Collection<Long> employeeIds;
    /**
     * 状态
     */
    @JsonIgnore
    private List<String> runStatusList;

    private Set<String> opts;
}
